package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	args := os.Args	//获取用户输入的所有参数
	if args == nil || len(args) != 3 {
		fmt.Println("usage : xxx srcFile dstFile")
		return
	}

	srcPath := args[1]	//获取输入的第一个参数
	dstPath := args[2]	//获取输入的第二个参数
	fmt.Printf("srcPath = %s, dstPath = %s\n", srcPath, dstPath)

	if srcPath == dstPath {
		fmt.Println("源文件和目的文件名字不能相同")
		return
	}

	srcFile, err := os.Open(srcPath)	//打开源文件
	if err != nil {
		fmt.Println(err)
		return
	}

	dstFile, err2 := os.Create(dstPath)	//创建目的文件
	if err2 != nil {
		fmt.Println(err2)
		return
	}

	buf := make([]byte, 1024)	//切片缓冲区
	for {
		//从源文件读取内容，n为读取文件内容长度
		n,err := srcFile.Read(buf)
		if err != nil && err != io.EOF{
			fmt.Println(err)
			break
		}
		if n == 0 {
			fmt.Println("文件处理完毕")
			break
		}
		tmp := buf[:n]
		dstFile.Write(tmp)
	}

	srcFile.Close()
	dstFile.Close()
}
